A Robot Operating System (ROS) may comprise a plurality of nodes and topics, where each node may be considered as an independent process. The nodes may be divided into two categories: transmitting nodes and receiving nodes, where a transmitting node may be configured to transmit acquired data, and a receiving node may be configured to receive the data transmitted by the transmitting node (occasionally a node can be both a transmitting node and a receiving node). A topic is a basis for establishing a connection between the nodes. After the nodes are connected with each other, the transmitting node and the receiving node can transmit data through a shared memory. Moreover, data of different topics may be transmitted using different shared memories.
At present, a common technology used to transmit data between the nodes is the streaming data transmission technology, which typically utilizes the following solution: the transmitting node first serializes the original data into streaming data according to certain encoding rules; then transmits the serialized streaming data through a socket or a shared memory; and finally the receiving node de-serializes the received streaming data into the original data according to the same encoding rule, in order to use the original data transmitted by the transmitting node.
Although the prior art is feasible, there are two apparent drawbacks: first, it is time consuming to serialize and de-serialize the data, thus degrading directly the data transmission performance; second, the data being transmitted has to be copied numerous times, thus occupying a considerable memory space.